const type = uni.getSystemInfoSync().uniPlatform
// 把blob转为file(h5环境使用)
function dataURLtoFile(dataUrl, filename) {
    const arr = dataUrl.split(',');
    const mime = arr[0].match(/:(.*?);/)[1];
    const bstr = atob(arr[1]);
    let n = bstr.length;
    const u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], filename, { type: mime });
}
function exchangeFile(imageUrl){
    if(type === 'web'){
        imageUrl = dataURLtoFile(imageUrl, 'filename.jpg');
    }
    return new Promise((resolve,reject)=>{
        resolve(imageUrl)
    })
}
//图片压缩处理
async function compressImage(imageUrl) {
    let compressedUrl = imageUrl;
    let count = 0; // 定义一个计数器，用于记录循环次数
    while (count < 5) { // 最多循环5次
        count++; // 对计数器加1
        await new Promise((resolve, reject) => {
            this.$refs.helangCompress.compress({
                src: compressedUrl,
                maxSize: 800,
                fileType: 'jpg',
                quality: 0.85,
                minSize: 640 
            }).then((res) => {
                uni.getFileInfo({
                    filePath: res,
                    success: ({size}) => {
                        console.log(size, '压缩后的文件大小');
                        if (size < 4096 * 1024) { // 小于 4MB，压缩成功
                            console.log('压缩成功');
                            compressedUrl = res; // 更新压缩后的图片路径
                            resolve();
                        } else { // 大于等于 4MB，继续压缩
                            compressedUrl = res; // 更新压缩后的图片路径
                            console.log('再次压缩');
                            resolve();
                        }
                    }
                })
            }).catch((err) => {
                console.log(err);
                reject(err);
            });
        });
        if (compressedUrl) break; // 如果已经成功压缩图片，则退出循环
    }

    if (!compressedUrl) {
        throw new Error('经过5次重试仍无法成功压缩图片');
    }
   
    if(type === 'web'){
        compressedUrl = dataURLtoFile(compressedUrl, 'filename.jpg');
    }
    return compressedUrl;
}
export { exchangeFile, compressImage };